package com.briup.server.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.briup.server.domain.bean.LabsRentalTime;
import com.briup.server.domain.dto.LabsRentalTimePageQueryDTO;
import com.briup.server.domain.vo.RentalTimeAvailableVO;
import com.briup.server.domain.vo.RentalTimeVO;

import java.time.LocalDate;
import java.util.List;

public interface LabsRentalTimeService extends IService<LabsRentalTime> {

    /**
     * 分页查询各个实验室的预约时间段
     *
     * @param queryDTO 分页查询参数
     * @return 分页结果
     */
    Page<RentalTimeVO> pageQuery(LabsRentalTimePageQueryDTO queryDTO);

    /**
     * 新增或更新实验室预约时间段
     *
     * @param labsRentalTime 实验室预约时间段
     */
    void saveOrUpdateLabsRentalTime(LabsRentalTime labsRentalTime);

    /**
     * 根据实验室id以及对应日期查询可用的预约时间段
     *
     * @param labId 实验室id
     * @param date  日期
     * @return 可用的预约时间段列表
     */
    List<RentalTimeAvailableVO> getAvailableTimes(Long labId, LocalDate date);
}
